package com.thn.comment.controller;

import com.thn.comment.model.Comment;
import com.thn.comment.service.CommentService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.bind.annotation.*;

import java.util.List;

/**
 * @author jzg
 * @description REST 控制器，用于处理与评论相关的 HTTP 请求
 */
@RestController
@RequestMapping("/api/comments")
public class CommentController {

    @Autowired
    private CommentService commentService;

    /**
     * 获取所有评论
     * @return 评论列表
     */
    @GetMapping
    public List<Comment> getAllComments() {
        return commentService.list();
    }

    /**
     * 根据 ID 获取评论
     * @param id 评论 ID
     * @return 评论对象
     */
    @GetMapping("/{id}")
    public Comment getCommentById(@PathVariable Long id) {
        return commentService.getById(id);
    }

    /**
     * 创建新评论
     * @param comment 新评论对象
     * @return 是否创建成功
     */
    @Transactional
    @PostMapping
    public boolean createComment(@RequestBody Comment comment) {
        boolean saved = commentService.save(comment);
        return saved;
    }

    /**
     * 更新评论
     * @param id 评论 ID
     * @param comment 更新的评论对象
     * @return 是否更新成功
     */
    @PutMapping("/{id}")
    public boolean updateComment(@PathVariable Integer id, @RequestBody Comment comment) {
        comment.setId(id);
        return commentService.updateById(comment);
    }

    /**
     * 删除评论
     * @param id 评论 ID
     * @return 是否删除成功
     */
    @DeleteMapping("/{id}")
    public boolean deleteComment(@PathVariable Long id) {
        return commentService.removeById(id);
    }
}
